package com.zenithsun.news.newsinfo.dao;

import java.util.HashMap;
import java.util.List;

import com.syzg.common.dao.BaseDAO;
import com.zenithsun.news.newsinfo.model.Newsinfo;
import com.zenithsun.news.specialnews.model.Specialnews;

public interface NewsinfoDAO extends BaseDAO<Newsinfo> {
	
	
	/**
	 * 批量删除新闻信息(solr的增量处理方式)
	 * @param newsids
	 * @return
	 */
	public int deleteNewsinfoBatchSolr(String[] newsids);
	
	/**
	 * 批量删除新闻信息
	 * @param newsids
	 * @return
	 */
	public int deleteNewsinfoBatch(String[] newsids);
	
	/**
	 * 批量删除图片集合信息
	 * @param newsids
	 * @return
	 */
	public int delNewsdetailinfoBatch(String[] newsids);

	public void delNewsdetailinfo(String newsinfoId);
	
	/**
	 * 修改新闻更新时间(solr的增量处理方式)
	 * @param newsid
	 * @return
	 */
	public boolean updateNewsinfoUpdateTimeSolr(String newsid);
	
	/**
	 * 分页查询新闻审核记录信息
	 * @author wanglei@enersun.con.cn
	 * @param pageNo
	 * @param pageSize
	 * @param searchCondition 查询条件
	 * @return List<Newsinfo>
	 * @throws Exception
	 */
	public List<Newsinfo> listNewsinfo(int pageNo, int pageSize, Newsinfo searchCondition, int state) throws Exception;
	
	/**
	 * 根据条件查询数量
	 * @author wanglei@enersun.con.cn
	 * @param searchCondition
	 * @return int
	 * @throws Exception
	 */
	public int countNewsinfo(Newsinfo searchCondition, int state) throws Exception;
	
	/**
	 * 发布新闻
	 * @author wanglei@enersun.con.cn
	 * @param newInfo
	 * @return Exception
	 */
	public boolean publishNews(Newsinfo newInfo) throws Exception;
	
	/**
	 * 修改封面图片信息
	 * @param newsId
	 * @param coverPath
	 * @return boolean
	 * @throws Exception
	 */
	public boolean updateCover(String newsId, String coverPath) throws Exception;
	
	/**
	 * 通过ID查询新闻信息
	 * @param newsId
	 * @return Newsinfo
	 * @throws Exception
	 */
	public Newsinfo findNewsinfoById(String newsId) throws Exception;
	
	/**
	 * 根据ID查询具体的新闻信息
	 * @return List<Newsinfo>
	 * @throws Exception
	 */
	public List<Newsinfo> listNewsinfo(List<String> idList) throws Exception;
	
	/**
	 * 首页轮播
	 * @param rows 条数
	 * @return
	 * @throws Exception
	 */
	public List<HashMap<String, Object>> listNewsinfo_carousel(int rows) throws Exception;
	
	/**
	 * 置顶新闻
	 * @param rows 条数
	 * @return
	 * @throws Exception
	 */
	public List<HashMap<String, Object>> listNewsinfo_top(int rows) throws Exception;
	
	/**
	 * 按主题查找新闻
	 * @param rows 行数
	 * @param columnId 主题ID
	 * @return
	 * @throws Exception
	 */
	public List<HashMap<String, Object>> listNewsinfo_columns(int rows, String columnId) throws Exception;
	
	/**
	 * 最新新闻
	 * @param rows 行数
	 * @return
	 * @throws Exception
	 */
	public List<HashMap<String, Object>> listNewsinfo_upToDate(int rows) throws Exception;

	/**
	 * 获取最新发布的新闻
	 * @param  limit 限制的条数
	 * @return 新闻集合
	 * @throws Exception
	 * */
	public List<Newsinfo> getLatestPublishNews(int limit);

	/**
	 * 随机获取一条id不相等的图片新闻id
	 * @param  id 需要过滤的图片id
	 * @return 新闻的id
	 * @throws Exception
	 * */
	public String getRandomNewsinfo(String id);
	
	/**
	 * 根据栏目id获取发布的新闻的数量
	 * @param  columnid 栏目的id
	 * @return 新闻的数量
	 * @throws Exception
	 * */
	public int getPublishNewsCountByColumnid(String columnid);
	

	/**
	 * 根据栏目id获取发布的新闻
	 * @param  pageNo 页码
	 * @param  limit 每页大小
	 * @param  columnid 栏目的id
	 * @return 新闻集合
	 * @throws Exception
	 * */
	public List<Newsinfo> getPublishNewsByColumnid(int pageNo, int limit, String columnid);
	/**
	 * 根据批量ID查询
	 * @param ids
	 * @return
	 */
	public List<Newsinfo> getNewsInIds(String[] ids, boolean isNull);
	
	/**
	 * 专题ID查询新闻
	 * @param snId
	 * @return
	 */
	public List<Newsinfo> getNewsBySNID(String snId);
	
	public List<Newsinfo> getNewsListBySnIdIsNotNull(int pageNo, int limit, Newsinfo searchCondition);
	
	public int getNewsCountBySnIdIsNotNull(Newsinfo searchCondition);
	
	public List<HashMap<String, Object>> getSpecialNewsUpToDate(int rows) ;

	public List<Specialnews> getSpecialNews();
}
